Software development is typically performed as group projects. A subject software system is developed through design efforts, test efforts, implementation efforts and maintenance efforts. There may be different groups and different group members participating in each of these efforts. Throughout these efforts and among the work group members, various modeling and other development tools are used for increased communication and consistency in developing the subject software system. A software configuration management system is one such tool.
Software configuration management systems allow teams of users (software developer/engineer) to work with artifacts of a subject software system. An “artifact” is the persistent result of work done by a-user, typically persisted in a file system such as a model and source code.
Software configuration management (SCM) systems must provide a way for users to configure their work areas to select appropriate versions of the artifacts (e.g., files) with which they are working. Traditional SCM systems focus the configuration of work areas on the selection of individual artifacts, using file names, version numbers or patterns of each to select the appropriate versions.